package queens.facades.impl;

import java.util.List;

import queens.beans.BusquedaClientesBean;
import queens.beans.ClienteBean;
import queens.daos.IClienteDAO;
import queens.exceptions.QueensException;
import queens.facades.IClienteFacade;
import queens.util.Constantes;

public class ClienteFacade implements IClienteFacade{
	
	private static final String clase = ClienteFacade.class.toString();
	
	private IClienteDAO clienteDAO;

	public IClienteDAO getClienteDAO() {
		return clienteDAO;
	}

	public void setClienteDAO(IClienteDAO clienteDAO) {
		this.clienteDAO = clienteDAO;
	}

	public void insertarCliente(ClienteBean clienteBean){
		if(clienteDAO.existeCliente(clienteBean.getDni(), Constantes.SI)){
			throw new QueensException(clase, "insertarCliente", "existe.cliente.dni", new Exception());
		}else if(clienteDAO.existeCliente(clienteBean.getDni(), Constantes.NO)){
			// existe un cliente no activo con ese dni
			throw new QueensException(clase, "insertarCliente", "existe.cliente.no.activo", new Exception());
		}
		clienteDAO.insertarCliente(clienteBean);
	}

	public ClienteBean obtenerCliente(String dni){
		return clienteDAO.obtenerCliente(dni);
	}

	public boolean existeCliente(String dni, String activo){
		return clienteDAO.existeCliente(dni, activo);
	}

	@SuppressWarnings("unchecked")
	public List buscarClientes(BusquedaClientesBean busquedaClientesBean){
		return clienteDAO.buscarClientes(busquedaClientesBean);
	}

	public void editarCliente(ClienteBean clienteBean){
		clienteDAO.editarCliente(clienteBean);
	}

	@Override
	public void borrarCliente(String dni) {
		clienteDAO.borrarCliente(dni);
	}

	@SuppressWarnings("unchecked")
	@Override
	public List listadoClientes(String ordenacionListado) {
		return clienteDAO.listadoClientes(ordenacionListado);
	}
}